/**
 * 快乐数定义为：
 * 对于一个正整数，每次将该数替换为它每个位数上的数字平方和，
 * 如果最终结果为1，那么它就是快乐数。
 * 以下使用哈希方法解决
 * @param {*} n 
 */
function isHappy(n) {
    let has = {};
    let res = n;
    if (n === 1) return true;
    if (n < 10) return false;
    while (res !== 1 && !has[res]) {
        has[res] = true;
        res = sum(res);
    }
    return res === 1;
}

function sum(n) {
    let sum = 0;
    while (n > 0) {
        cur = parseInt(n % 10);
        sum += (cur * cur);
        n = parseInt(n / 10);
    }
    return sum;
}

console.log(isHappy(19))